matlab求解常微分方程

您所在的位置:网站首页 matlab 次方 matlab求解常微分方程

matlab求解常微分方程

#matlab求解常微分方程| 来源: 网络整理| 查看: 265

一、概念

微分方程:含导数或微分的方程。

解:满足微分方程的函数。

特解/通解:特解指的是满足微分方程的某一个解;通解指的是满足微分方程的一组解。

阶:微分方程中导数或微分的最高阶数。

线性/非线性:(几何意义:叠加原理)方程中的函数和它的各阶导数都是一次方为线性微分方程,否则为非线性。例:

y'=sin(x)*y 线性

y'=y^2 非线性

齐次/非齐次:(代数意义:次数)齐次微分方程中不含常数项,也不含仅由x的各种运算组合构成的项(比如4xx,sinx等),否则为非齐次。

常微分/偏微分:未知函数是一元函数的,叫常微分方程;未知函数是多元函数的叫做偏微分方程。

初值问题和边值问题:附加条件中未知函数及其导数的独立变量取值相同,则为初值问题;附加条件中未知函数及其导数的独立变量取值不同,则为边界值问题。例:

y(0)=1,y'(0)=2 初值问题

y(0)=1,y'(1)=2 边值问题

二、解法

在matlab中解微分方程,方法有两种:

解析解方法:严格按照公式逻辑推导得到的,具有基本的函数形式。

数值解方法:采用某种计算方法,在特定的条件下得到的一个近似数值结果,如有限元法,数值逼近法,插值法等等。

解析解方法可回顾《高等数学》中相关公式。

数值解方法可回顾《数值分析》中相关解法。

matlab微分方程求解

一、解析解

1.1 解析解的存在

由Abel-Ruffini定理,四次及以下的多项式代数方程是能求出根的解析解的,即低阶常系数线性微分方程有一般意义下的解析解。

非线性微分方程只能用数值解法求解,即使看起来很简单的非线性微分方程也是没有解析解的,只有极特殊的非线性微分方程解析可解。

1.2 解析解的解法

利用dsolve函数

S = dsolve(eqn)

S = dsolve(eqn,cond)

S = dsolve(___,Name,Value)

[y1,...,yN] = dsolve(___)

1.3 实例

例1.1 输入信号为u(t)=exp(-5*t)*cos(2*t+1)+5,求微分方程diff(y,4)+10*diff(y,3)+35*diff(y,2)+50*diff(y)+24*y=5*diff(u,t,2)+4*diff(u,t)+2*u的通解。初值条件:y(0)=3,y1(0)=2,y2(0)=0,y3(0)=0,求方程的特解。(约定y1代表一阶导数,以此类推)

代码如下:

% y=dsolve(f1,f2,...,fm) 默认自变量为t

% y=dsolve(f1,f2,...,fm,'x') 指明自变量

% f可由字符串表示也可由符号表达式表示

%用字符串表达式,新版本会被移除

syms t;

u=exp(-5*t)*cos(2*t+1)+5;

uu=5*diff(u,t,2)+4*diff(u,t)+2*u;

y=dsolve(['D4y+10*D3y+35*D2y+50*Dy+24*y=',char(uu)]); %求解

y=simplify(y) %化简

%用符号表达式,推荐

syms y(t);

eqn=diff(y,4)+10*diff(y,3)+35*diff(y,2)+50*diff(y)+24*y==uu;

y=dsolve(eqn);

y=simplify(y)

%检验

diff(y,4)+10*diff(y,3)+35*diff(y,2)+50*diff(y)+24*y-uu

%求特解并绘图

syms y(t);

eqn=diff(y,4)+10*diff(y,3)+35*diff(y,2)+50*diff(y)+24*y==uu;

y1=diff(y);y2=diff(y,2);y3=diff(y,3);y4=diff(y,4);

% 需要引入中间变量

% 用字符串求解的情况,不需要引入中间变量。'y(0)=3','Dy(0)=2','D2y(0)=0'...

cond=[y(0)==3,y1(0)==2,y2(0)==0,y3(0)==0];

z=dsolve(eqn,cond);

z=simplify(z)

ezplot(z,[0,5])

fplot(z,[0,5])

% ezplot(fun,[xmin,xmax])绘制fun(x)在以下域上的图形:xmin



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3